sptr

    Streamline particle tracking is invoked with this control statement.

    Group 1 - DTMX, IPRT, IPRTO, RSEED, TPLIM, DISTLIM, LINELIM, DIVD_WEIGHT

    Group 2 - COURANT_FACTOR, IPRTR, ITENSOR, IREVERS, FREEZ_TIME, MAX_JUMP

    Keywords and their associated input are described below. These keywords may be entered in any order following Group 2, but must be directly followed by any associated data. All keywords are optional except “tprp” which flags input of the particle transport properties.

    Optional keyword “tcurve” is input to indicate that transfer function curves should be input to model matrix diffusion. It is followed by NUMPARAMS and TFILENAME.

    • KEYWORD “tcurve”
    • NUMPARAMS
    • TFILENAME

    Optional keyword “omr” is input to indicate the grid has octree mesh refinement. It is followed by the number of refined (OMR) nodes in the grid. An optional keyword, “file”, which if input is followed by the name of a file from which to read or to write omr initialization calculation arrays, and the file format. The “file” option should only be used for particle tracking runs using steady state flow. It should also be noted that the file should be re-generated if parameter changes that affect velocity are made since velocities will not be recalculated if the file exists.

    • KEYWORD “omr”
    • OMR_NODES
    • KEYWORD “file”
    • OMRFILENAME
    • OMR_FORM

    Optional keyword “tpor” is input to indicate tracer porosity will be input and is followed by tracer porosity values input using JA, JB, JC format or the keyword “file” and the name of a file containing the tracer porosity values.

    • KEYWORD “tpor”
    • JA, JB, JC, PS_TRAC (JA, JB, JC - defined on page 33)

    -or-

    • KEYWORD “tpor”
    • KEYWORD “file”
    • TPORFILENAME

    Optional keyword “wtdt” to indicate initial particle locations should be moved below the water table by distance DELTAWT.

    • KEYWORD “wtdt”, DELTAWT

    Optional keyword “volum” to indicate control volumes associated with computation of sptr velocities should be written to an output file. These volumes are used with PLUMECALC to account for the approximate control volumes used for the velocity calculations on an OMR grid. The “volume” keyword may be followed by the file format.

    • KEYWORD “volum”

    -or-

    • KEYWORD “volum”, SPTRX_FORMAT

    Optional keywords “po”, “sa”, “pe”, “de”, “pr”, “te”, “zo”, “id” define parameters to be output. No data is associated with the parameter output flags. These parameters are output in the ‘*.sptr2” file in the order entered.

    Optional keyword “xyz” indicates that coordinate data should be included in the abbreviated ‘*.sptr2’ output file (see IPRTO below).

    The optional keyword “zbtc” indicates that breakthrough curves will be computed for specified zones. It is followed by NZBTC … and ZBTC. If keyword “alt” follows the “zbtc” keyword an alternate output format will be used where,

    • KEYWORD “zbtc”

    -or-

    • KEYWORD “zbtc” “alt”
    • NZBTC, DTMN, PART_MULT, PART_FRAC, DELTA_PART, PART_STEPS, TIME_BTC
    • ZBTC

    Optional keyword “cliff”

    Optional keyword “corner”

    Optional keyword “capture”

    Optional keyword “spring”

    Keyword (‘tprp’) specifies that the particle transport properties will be entered on subsequent lines. The transport properties input (Group 4) depends on the value of TPRP_FLAG, the first value input for that group. For TPRP_FLAG = 2 or 4, format of Group 4 input also depends on the form of the dispersion coefficient tensor, as selected using the flag ITENSOR (Group 2).

    • KEYWORD “tprp”

    TPRP_FLAG = 1:

    Group 3 - TPRP_FLAG, KD

    TPRP_FLAG = 2:

    ITENSOR = 1

    Group 3 - TPRP_FLAG, KD, DM, A1, A2, A3, A4, ASX, ASY, VRATIO

    ITENSOR = 2

    Group 3 - TPRP_FLAG, KD, DM, AL, ATH, ATV, VRATIO

    ITENSOR = 3

    Group 3 - TPRP_FLAG, KD, DM, ALH, ALV, ATH, ATV, VRATIO

    ITENSOR = 4

    Group 3 - TPRP_FLAG, KD, DM, AL, AT, VRATIO

    ITENSOR = 5

    Group 3 - TPRP_FLAG, KD, AL, ATH, ATV, DM, VRATIO

    TPRP_FLAG = 3:

    Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE

    TPRP_FLAG = 4:

    ITENSOR = 1

    Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, DM, A1, A2, A3, A4, ASX, ASY, VRATIO

    ITENSOR = 2

    Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, DM, AL, ATH, ATV, VRATIO

    ITENSOR = 3

    Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, DM, ALH, ALV, ATH, ATV, VRATIO

    ITENSOR = 4

    Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, DM, AL, AT, VRATIO

    ITENSOR = 5 (not recommended, included for compatibility with older versions of the code)

    Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, AL, ATH, ATV, DM, VRATIO

    TPRP_FLAG =11 or TPRP_FLAG = 12:

    Group 3- TPRP_FLAG, SIMNUM

    • KEYWORD ‘file’
    • CDF_FILENAME

    TPRP_FLAG =13 or TPRP_FLAG = 14:

    Group 3 - TPRP_FLAG, SIMNUM

    • KEYWORD ‘file’
    • CDF_FILENAME

    or

    Group 3 - TPRP_FLAG, K_REV, R_MIN, R_MAX, SLOPE_KF, CINT_KF, AL, ATH, ATV, DM, VRATIO

    Group 4 - JA, JB, JC, MODEL_NUMBER

    Group 3 is ended when a blank line is encountered. The MODEL_NUMBER is incremented each time a Group 3 line is read, and Group 4 lines refer to this parameter.

    Group 5 - ITM, IST

    -or-

    Group 5 - ITM, IST, COUNT_STEPS_MAX, SPTR_FLAG

    Group 6 - NX, NY, NZ

    Group 7 - X10, Y10, Z10

    Group 8 - XDIM, YDIM, ZDIM

    Group 9 - IJKV(I), X1(I), Y1(I), Z1(I) for I = 1 to NUMPART

    Group 9 input is terminated with a blank line.

    -or-

    Group 9 - KEYWORD “file”

    • SPTR_FILENAME

    Restart runs for particle tracking may be accomplished by reading particle starting locations from a file. A particle restart file is generated by adding the optional SPTR_FLAG, keyword “save” to group 5.

    Note when IST = 0 or 1, Group 10 is used and place holders are inserted for Groups 7-9 and NUMPART is equal to the number of particle starting locations that are entered; however, when IST = 2, Group 10 is not implemented and Groups 7-9 are used followed by a blank line. NUMPART equals NX*NY*NZ in this case.

    Input Variable Format Description
    DTMX real Time step control (seconds). FEHM will account for all particles every abs(dtmx) seconds and write information to the “.sptr3” file if the “zbtc” keyword is present. This controls the output density for breakthrough curve information only. If you are not using/creating breakthrough curves, set DTMX very large (e.g. 1e20). If DTMX is negative, the time step for streamline calculations is forced to be abs(DTMX) seconds.
    IPRT integer Flag to denote whether individual particle positions are written at specified intervals to the “.sptr1” file. The particle coordinate positions are used to get a snapshot of the particle plume at various times during the simulation.IPRT = 0, No outputIPRT > 0, Output is written to the “.sptr1” file every IPRT time steps.
    IPRTO integer Flag to denote if particle streamline information is written to the “.sptr2” file. The information is used to draw complete particle streamlines (for a relatively small number of particles).IPRTO = 0, No outputIPRTO > 0, Extended output is written to the “.sptr2” file.IPRTO < 0, Abbreviated output is written to the “.sptr2” file.If abs(IPRTO) = 1,output is formatted, abs(IPRTO) = 2 output is unformatted, and abs(IPRTO) = 3 output is in binary format.
    RSEED integer Random number seed for the random number generator. For compatibility with earlier versions of FEHM in which this input did not exist, if no value of RSEED is input, the code assigns a value of 466201.
    TPLIM real Minimum amount of time (days) a particle should move before location is output. Default is 0 days.
    DISTLIM real Minimum distance (m) a particle should move before location is output. Default is 0 meters.
    LINELIM integer Maximum number of lines that will be written to sptr2 file.
    DIVD_WEIGHT real Weight factor for the derivative of the dispersion tensor term. Default is 1. If a value of zero is entered, the derivative term is not used.
    COURANT_FACTOR integer Fraction of the distance through a cell that a particle moves in a single time step. This is used to ensure that the particle, on average, traverses less than one cell before a random-walk dispersion step is performed. For example, a factor of 0.25 indicates that the particle should take at least 4 time steps to move through a cell.
    IPRTR integer Flag for choosing the method for computing concentrations in cells based on the particle tracking information that will be written to the “.trc” or AVS output files.IPRTR Š 0, particle concentrations are computed as number of particles residing in the cell divided by the fluid mass in the cell.IPRTR < 0, an integral of the particle concentration specified above is made and reported. This integral is the normalized cumulative concentration, which for a steady state flow field is equivalent to the response to a step change in particle concentration (note that the particles are input as a pulse).
    ITENSOR integer Flag indicating the mathematical form of the dispersion coefficient tensor to be selected.ITENSOR = 0, No dispersion.ITENSOR = 1, Generalized form of the axisymmetric tensor, from Lichtner et al. (2002)ITENSOR = 2, Axisymmetric form of the dispersion coefficient tensor of Burnett and Frind (1987)ITENSOR = 3, Modified form of the dispersion coefficient tensor of Burnett and Frind (1987). See Lichtner et al. (2002) for detailsITENSOR = 4, Isotropic form of the dispersion coefficient tensor of Tompson et al. (1987)ITENSOR = 5, Original form of the Burnett and Frind (1987) tensor as implemented in FEHM Version 2.10.
        Note: for Version 2.10 and earlier, the variable ITENSOR did not exist. For compatibility with these earlier versions, when ITENSOR is omitted from the input file, the code uses the ITENSOR = 5 formulation and the pre-existing input format. It is recommended that new simulations use one of the other tensor formulations (ITENSOR = 1 to 4).
        In addition, the sign of ITENSOR is used as a switch as follows: if ITENSOR < 0, abs(ITENSOR) is the flag, but the \(\nabla \cdot D\) term is not included in the computation of particle displacements. Under normal circumstances, an approximation of the term \(\nabla \cdot D\) is used in the particle tracking algorithm to obtain accurate solutions in cases where there are gradients in \(D\).
    IREVERS integer Flag indicating if reverse particle tracking should be performed. If omitted, forward tracking is performed.IREVERS = 0, Standard forward trackingIREVERS = -1, Forward tracking only after exiting the time loop (this is needed for comparing results with reverse tracking)IREVERS = +1, Reverse tracking.Note: When using reverse tracking, turn off the dispersion, ITENSOR = 0, as it does not make sense to try to reverse the random part of the displacement. The value for ITENSOR must be entered to use this option.
    FREEZ_TIME real If greater than zero, time (days) at which flow solution is frozen and only particle transport is computed after that time. If omitted, the flow solution continues for the entire simulation. Values for ITENSOR and IREVERS must be entered to use this option.
    MAX_JUMP integer When using random walk, the maximum number of cells a particle is allowed to jump in a single step. (Default is 10).
    KEYWORD character Optional keyword “tcurve” indicating transfer function curve data should be input to model matrix diffusion. If the keyword is found then NUMPARAMS and FILENAME are entered, otherwise they are omitted.
    NUMPARAMS integer Number of parameters that define the transfer function curves being used.
    TFILENAME character Name of input file containing the transfer function curve data.
    KEYWORD character Optional keyword “omr” to indicate the grid has octree mesh refinement. If the keyword is found then OMR_NODES is entered, and optionally keyword “file” with OMRFILENAME and OMR_FORM, otherwise they are omitted.
    OMR_NODES integer Number of refined (omr) nodes in the grid.
    KEYWORD character Optional keyword “file” indicating that the omr initialization calculation arrays should be written to or read from a file. This option should only be used with steday-state flow.
    OMRFILENAME character Name of file from which to read or to write omr arrays.
    OMR_FORM character Format of the omr file, formatted or unformatted.
    KEYWORD character Optional keyword “tpor” to indicate tracer porosities should be read.
    PS_TRAC real Tracer porosity
    KEYWORD character Optional keyword “file” indicating that the tracer porosities should be read from a file.
    TPORFILENAME character Name of file from which to read tracer porosity.
    KEYWORD character Optional keyword “wtdt”
    DELTAWT real Distance below the water table that particles should be started.
    KEYWORD character Optional keyword “volum” to indicate control volumes should be output. Output is written to the “.sptrx” file.
    SPTRX_FORMAT character File format for control volume output file “formatted” or “unformatted”. Default is formatted.
    KEYWORD character Optional keywords “po” (porosity), “sa” (saturation), “pe” (permeability), “de” (density), “pr” (pressure), “te” (temperature), “zo” (zone number), “id” (particle identifier) 1 per line, indicating which parameters will be output along the particle path (written to “.sptr2” file). If no keywords are present no parameter ddata will be output. Note that in older versions of FEHM porosity and saturation were output if no keywords were entered.
    KEYWORD character Keyword ‘tprp’ specifying that transport properties are to follow on subsequent lines.
    TPRP_FLAG integer
    Flag indicating what type of transport property information is to follow on the line
    1 - KD only
    2 - KD and 5 terms of dispersivity tensor
    3 - (Dual porosity) - Matrix KD, diffusion coefficient, retardation factor in fracture, and fracture aperture. No dispersion
    4 - (Dual porosity) - Matrix KD, diffusion coefficient, retardation factor in fracture, fracture aperture, and 5 terms of dispersivity tensor
    11 - Colloid diversity model with importance sampling, CDF vs Retardation Factor specified as a table in the optional file specified by CDF_FILENAME
    12 - Similar to case 11 above , except the SQRT(CDF) is used instead of CDF for importance sampling
    13 - Colloid diversity model with importance sampling, CDF vs \(K_f\) (attachment rate constant) specified as a straight line equation in the log-log space either on this line or in the optional file specified by CDF_FILENAME
    14 - Similar to case 13 above, except the SQRT(CDF) is used instead of CDF for importance sampling
    SIMNUM integer Simulation number, used for selecting the table/equation from the colloid diversity file.
    KEYWORD character*4 Optional keyword ‘file’ designating the cumulative probability distribution function (CDF) retardation parameters for the colloid diversity model should be read from an external file
    CDF_FILENAME character*80
    Name of the file containing the cumulative probability distribution function (CDF) (entered if optional keyword ‘file’ follows keyword ‘dive’).
    If TPRPFLAG = 11 or 12, Table option.
    If TPRPFLAG = 13 or 14, Equation option.
    The following equations are used for \(R_{min} \le R \le R_{max}\), \(R = 1 + K_f / K_{rev}\), \(\log_{10}(CDF) = b + m \cdot \log_{10}(K_f)\)
    KD real Matrix sorption coefficient
    DIFM real Diffusion coefficient applying to matrix diffusion submodel (m2/s)
    RD_FRAC real Retardation factor in fracture media
    POR_MATRIX real Matrix porosity (fracture volume fraction is specified in rock macro)
    APERTURE real Fracture aperture (m)
    AL real Longitudinal dispersivity, αL (m). ITENSOR = 2, 4, or 5
    ALH real Horizontal longitudinal dispersivity, αLH (m). ITENSOR = 3
    ALV real Vertical longitudinal dispersivity, αLT (m). ITENSOR = 3
    AT real Transverse dispersivity, αT (m). ITENSOR = 4
    ATH real Transverse horizontal dispersivity, αTH (m). ITENSOR = 2, 3, or 5
    ATV real Transverse vertical dispersivity, αTV (m). ITENSOR = 2, 3, or 5
    A1 real Generalized dispersivity term α1 (m) from Lichtner et al. (2002)
    A2 real Generalized dispersivity term α2 (m) from Lichtner et al. (2002)
    A3 real Generalized dispersivity term α3 (m) from Lichtner et al. (2002)
    A4 real Generalized dispersivity term α4 (m) from Lichtner et al. (2002)
    ASX real Direction cosine of the axis of symmetry from Lichtner et al. (2002)
    ASY real Direction cosine of the axis of symmetry from Lichtner et al. (2002)
    DM real Molecular diffusion coefficient (m2/s)
    VRATIO real Parameter to control the movement of particles into low velocity cells via random walk. Used to restrict the artificial migration of particles into low permeability zones due to dispersion. The value of VRATIO is used as a ratio for determining if random walk into a new cell is allowed. If the ratio of the average velocity in the new cell divided by the velocity in the previous cell is less than VRATIO, then the particle is not allowed to migrate into the new cell. It is returned to its previous location, and a new random walk is computed and applied. Up to 10 attempts at a random walk are allowed, after which the particle location is left at the current location for the next advective step.
    MODEL_NUMBER integer Number of model (referring to the sequence of models read) to be assigned to the designated nodes or zone.
    KEYWORD keyword Optional keyword ‘zbtc’ specifying that zone breakthrough curves will be computed. Output will be written to the “.sptr3” file. If ‘zbtc’ is omitted, so are NZBTC and ZBTC. Note that the zones must be specified in a zone macro preceding the sptr macro in the input file before they are invoked using the keyword ‘zbtc’.
    NZBTC integer Number of zones for which breakthrough curves will be computed.
        Note that DTMN, PART_MULT, PART_FRAC, DELTA_PART, PART_STEPS, and TIME_BTC are optional input. They must be entered in the order given. When not entered the default values will be used.
    DTMN real Time step control (seconds). FEHM will account for all particles at time step intervals starting with dtmn seconds and write information to the “.sptr3” file if the “zbtc” keyword is present. This controls the output density for breakthrough curve information only. (Default DTMX)
    PART_MULT real Time step multiplication factor. (Default 2.)
    PART_FRAC real Fraction of particles that should break through before checking if time step should be increased. (Default 0.1*NUMPART)
    DELTA_PART real Fraction of particles that should break through during a time step so that the time step is not increased
    PART_STEPS integer Number of time steps that should be checked for DELTA_PART before increasing the time step
    TIME_BTC real Time to start using small breakthrough time steps (DTMN) for late initial breakthrough (days).
    ZBTC integer NZBTC zone numbers of the zone(s) for which breakthrough curves will be computed.
    ITM integer Maximum number of time steps to accomplish the FEHM time step ‘day’
    IST integer Flag to specify type of input for particlesIST = 0, local position and corresponding element number (Group 10)IST = 1, global position (Group 10)IST = 2, specify a zone of particles (Groups 7-9)
    COUNT_STEPS_MAX integer Maximim number of steps a particle is allowed to take in a sptr run. (Default 1000000) Input of this value is optional. If this value is omitted, the default will be used. The value must precede SPTR_FLAG if being used.
    SPTR_FLAG character Optional keyword “save” to signal that final particle locations and times should be written to a file, *.sptrs, for a particle restart run.
    NX integer Number of divisions in the x-direction
    NY integer Number of divisions in the y-direction
    NZ integer Number of divisions in the z-direction
    X10 real X-coordinate of the origin (xmin)
    Y10 real Y-coordinate of the origin (ymin)
    Z10 real Z-coordinate of the origin (zmin)
    XDIM real Length of X-direction
    YDIM real Length of Y-direction
    ZDIM real Length of Z-direction
    IJKV(I) integer Node or element number
    X1(I) real Starting X-coordinate for a particle
    Y1(I) real Starting Y-coordinate for a particle
    Z1(I) real Starting Z-coordinate for a particle
    KEYWORD character Optional keyword “file” indicating that the particle starting locations should be read from a file. If this file has been generated by the code using the “save” keyword in Group 6, particle starting times will also be read.
    SPTRFILENAME character Name of file from which to read initial particle locations.

    The following are examples of sptr. In the first example 10000 particles are inserted at the inlet within a single cell, and the breakthrough curve at a downstream location (defined in a call to zone) is recorded for the case of longitudinal dispersion with a dispersivity of 100 m and sorption with a KD of 0.0223715. Breakthrough concentration is output every 1.728e8 seconds to the “.sptr3” file.

    sptr
        1.728e8   0    0   0                    Group 1
        0.25      0    5   0                    Group 2
    tprp
        2         0.0223715 100. 0. 0. 0. 0.    Group 3
    
        1         0         0    1              Group 4
    
    zbtc
        1
        5
     1000         2                             Group 5
        1       100      1000                   Group 6
        0.    -1500.        0.                  Group 7
       10.     3000.       12.5                 Group 8
                                                Group 9
    

    In the second example, both longitudinal and transverse dispersion are invoked, but no sorption. The solute is input as a patch on the inlet face of the model. The dimensions of the patch will be 3,000 m in the y-direction and 12.5 m in the vertical direction, starting at the surface, and 100000 particles are injected. Data to generate a steady state concentration plume is output in the “.trc” file.

    sptr
        2.88e7      0           0       0                                   Group 1
        0.25        0           5       0                                   Group 2
    
    tprp
        2           0.       100.     0.1       0.1     0.      -1.e-10     Group 3
    
        1           0          0        1                                   Group 4
    
        1000        2                                                       Group 5
           1      100       1000                                            Group 6
           0.   -1500.         0.                                           Group 7
          10.    3000.       -12.5                                          Group 8
    

    The third example uses the colloid diversity model with importance sampling specified as an equation using an external input file, using the third set of parameters in the rcoll_eqn.dat, with the file rcoll_eqn.dat as:

    Colloid diversity model equation parameters
    1 1.5641426E-5 1.0 63933.785 0.7081742 0.0E+0 100. 10. 0.1 5.e-12 0.1
    2 1.1755084E-3 1.0 851.69573 0.7676392 0.0E+0 100. 10. 0.1 5.e-12 0.1
    3 1.0417102E-5 1.0 95996.984 0.7438557 0.0E+0 100. 10. 0.1 5.e-12 0.1
    .
    .
    .
    100 2.0808208E-4 1.0 4806.7954 0.62846046 0.0E+0 100. 10. 0.1 5.e-12 0.1
    

    The fourth example uses the colloid diversity model with importance sampling specified as an equation with parameters input in the sptr macro.

    sptr
    1.728e8         0       0       0       Group 1
    0.25            0       5       0       Group 2
    tprp
    13              3                       Group 3
    rcoll_eqn.dat
    
    1               0       0       1       Group 4
    
    zbtc
    1
    5
    1000            2                       Group 5
    1               100     1000            Group 6
    0.              -1500.  0.              Group 7
    10.             3000.   -12.5           Group 8
                                            Group 9
    

    © Copyright 2018, Los Alamos National Laboratory